package config

import (
	"github.com/zeromicro/go-zero/core/service"
	"github.com/zeromicro/go-zero/core/stores/redis"
)

type Config struct {
	service.ServiceConf
	Redis   redis.RedisConf
	RedisDB int

	JobFilename string
}

// func NewFileBaseConfigProvider(filename string) *FileBasedConfigProvider {
// 	err := initConfig(filename)
// 	if err != nil {
// 		fmt.Println(err)
// 		panic(err)
// 	}
// 	return &FileBasedConfigProvider{
// 		filename: filename,
// 	}
// }

// type RedisConfig struct {
// 	Host string
// 	Type string
// 	Pass string
// 	DB   int
// }

// type TaskConfig struct {
// 	Cronspec string
// 	TaskType string
// 	Payload  string
// }

// // logger 配置
// type LoggerConfig struct {
// 	Path       string
// 	MaxSize    int
// 	MaxBackups int
// 	MaxAge     int
// 	Compress   bool
// 	Level      string
// }

// type Config struct {
// 	RedisConfig
// 	Schedules []*TaskConfig
// 	Logger    LoggerConfig
// }

// var Conf = &Config{}

// func initConfig(filename string) error {
// 	viper.SetConfigFile(filename)
// 	// viper.SetConfigType("yaml")
// 	err := viper.ReadInConfig()
// 	if err != nil {
// 		return err
// 	}
// 	if err := viper.Unmarshal(&Conf); err != nil {
// 		return err
// 	}
// 	viper.WatchConfig()
// 	viper.OnConfigChange(func(e fsnotify.Event) {
// 		err = viper.Unmarshal(&Conf)
// 		if err != nil {
// 			panic(err)
// 		}
// 	})
// 	// fmt.Println(allConf)
// 	return nil
// }

// func (p *FileBasedConfigProvider) GetRedisConfigs() (*RedisConfig, error) {
// 	return &Conf.RedisConfig, nil
// }

// func (p *FileBasedConfigProvider) GetConfigs() ([]*asynq.PeriodicTaskConfig, error) {
// 	var configs []*asynq.PeriodicTaskConfig
// 	for _, cfg := range Conf.Schedules {
// 		var payload []byte
// 		if len(cfg.Payload) > 0 {
// 			payload = []byte(cfg.Payload)
// 		}
// 		configs = append(configs, &asynq.PeriodicTaskConfig{Cronspec: cfg.Cronspec, Task: asynq.NewTask(cfg.TaskType, payload)})
// 	}
// 	return configs, nil
// }
